home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Nordlicht Spiele / Nordlicht Spiele 15-09 (19xx)(Nordlicht)(DE)(PD).zip / Nordlicht Spiele 15-09 (19xx)(Nordlicht)(DE)(PD).adf / Shogun (.txt) < prev    next >
AmigaBASIC Source Code  |  1991-03-01  |  18KB  |  544 lines

  1. '  *********************************************
  2. '  * Programm SHOGUN V 2S                      *
  3. '  * von Frank Garnath   © 1987/1988           *
  4. '  *********************************************
  5.    CLEAR ,,30000
  6.    DEFINT f,m-s,w,z 
  7.    SCREEN 2,640,215,3,2
  8.    WINDOW 7,"",(0,0)-(631,190),0,2
  9.    WINDOW 8,"",(170,72)-(473,127),0,2:LINE (0,0)-(303,65),1,bf
  10.    WINDOW 6,"",(162,68)-(465,123),0,2
  11.    PALETTE 0,0.9,0.9,1
  12.    FOR x=1 TO 7
  13.      PALETTE x,x/10-0.1,x/10-0.1,x/10+0.1
  14.    NEXT x  
  15.    COLOR 1,0
  16.    LOCATE 1,12:PRINT" S H O G U N "
  17.    LOCATE 3,9:PRINT"von  Frank Garnath"
  18.    LOCATE 5,9:PRINT"Lübeck, 1987/1988"
  19.    LOCATE 7,1:PRINT"Möchten Sie die Anleitung lesen (j/n)?"
  20.    farbe=1:add=1
  21.    WHILE i$<>"j" AND i$<>"n" 
  22.      i$=INKEY$:RANDOMIZE TIMER
  23.      WINDOW OUTPUT 7
  24.      LINE (x,y)-(631-x,200-y),farbe,b:LINE (x+1,y)-(630-x,200-y),farbe,b
  25.      farbe=farbe+add
  26.      IF farbe=7 THEN add=-1
  27.      IF farbe=1 THEN add=1  
  28.      IF z=0 AND x<631 THEN x=x+2:y=y+1 :ELSE z=1:x=x-2:y=y-1:IF x<0 THEN z=0
  29.    WEND
  30.    CLS
  31.    WINDOW CLOSE 6
  32.    WINDOW CLOSE 8
  33.    IF i$="j" THEN CALL Anleitung 
  34.    GOSUB Dunkel:PALETTE 2,0,0,0:COLOR 2,0
  35.    CLS:LOCATE 12,30:PRINT"Einen Moment bitte!"
  36.    GOSUB Hell
  37.    
  38. Voreinstellungen:
  39.    DIM SHARED f(63), wert(63), ZugR(7,15), ZugW(7,15)
  40.  NeuesSpiel:   
  41.    RANDOMIZE TIMER:v=INT(RND*4)
  42.    IF v=0 OR v=2 THEN RESTORE Daten0:f1=2:f2=3
  43.    IF v=1 OR v=3 THEN RESTORE Daten90:f1=3:f2=2
  44.    IF v>1 THEN a=1:b=0:c=-1 :ELSE a=0:b=1:c=1
  45.    FOR y=a TO b STEP c
  46.      IF v>1 THEN d=15+y*32:e=y*32:f=-1 :ELSE d=y*32:e=15+y*32:f=1
  47.      FOR x=d TO e STEP f
  48.        READ wert(x):wert(x+16)=wert(x)
  49.      NEXT x
  50.    NEXT y
  51.    FOR y=0 TO 3
  52.      FOR x=y*16 TO 6+y*16 STEP 2
  53.        f(x)=f1:f(x+1)=f2:f(x+8)=f2:f(x+9)=f1
  54.      NEXT x
  55.    NEXT y
  56.  
  57.    RANDOMIZE TIMER      
  58.    FOR x=0 TO 7
  59.      prx(x)=1+x*48:pry(x)=1
  60.      pwx(x)=prx(x):pwy(x)=pry(x)+168
  61.      zr(x)=wert(x):zw(x)=wert(x+56)
  62.      v=RND
  63.      IF v<0.5 THEN zar(x,1)=1:zar(x,2)=3:zar(x,3)=2:zar(x,4)=4
  64.      IF v>=0.5 THEN zar(x,1)=1:zar(x,2)=2:zar(x,3)=4:zar(x,4)=3
  65.      v=RND
  66.      IF v<0.5 THEN zaw(x,1)=1:zaw(x,2)=3:zaw(x,3)=2:zaw(x,4)=4
  67.      IF v>=0.5 THEN zaw(x,1)=1:zaw(x,2)=2:zaw(x,3)=4:zaw(x,4)=3
  68.    NEXT x
  69.    zar(3,1)=1:zar(3,2)=1:zar(3,3)=2:zar(3,4)=2
  70.    zaw(4,1)=1:zaw(4,2)=1:zaw(4,3)=2:zaw(4,4)=2
  71.    IF ns=1 THEN Spielfeld 
  72.    FOR y=0.75 TO 0.02 STEP -0.01
  73.      FOR x=0 TO 1
  74.        PALETTE x,y,y+0.22,y+0.25
  75.      NEXT x 
  76.    NEXT y
  77.    FOR x=2 TO 7
  78.      PALETTE x,0.02,0.24,0.27
  79.    NEXT x
  80.    WINDOW CLOSE 7
  81.    WINDOW 2,"SHOGUN V 2S",(0,0)-(397,200),0,2
  82.    FOR x=0 TO 8
  83.      LINE (10,5)-(387+x,194+INT(x/2)),2,b
  84.    NEXT
  85.  
  86. Spielfeld:
  87.    WINDOW OUTPUT 2:LOCATE 2,1
  88.    LINE (0,0)-(385,193),5,b
  89.    FOR y=1 TO 163 STEP 48
  90.      FOR x=1 TO 317 STEP 96
  91.        LINE (x,y)-(x+47,y+23),f1,bf
  92.        LINE (x+48,y)-(x+95,y+23),f2,bf
  93.        LINE (x,y+24)-(x+47,y+47),f2,bf
  94.        LINE (x+48,y+24)-(x+95,y+47),f1,bf
  95.      NEXT x
  96.    NEXT y 
  97.  
  98. Figuren:   
  99.    FOR x=0 TO 7
  100.      LINE (6+x*48,4)-(41+x*48,21),4,bf
  101.      LINE (6+x*48,172)-(41+x*48,189),1,bf  
  102.      LINE (8+x*48,6)-(39+x*48,19),6,b 
  103.      LINE (8+x*48,174)-(39+x*48,187),7,b
  104.      IF x<>3 THEN PAINT (20+x*48,12),6
  105.      IF x<>4 THEN PAINT (20+x*48,179),7
  106.    NEXT x
  107.    PAINT (164,12),5,6:PAINT (212,179),5,7
  108.    COLOR 5,4
  109.    FOR x=0 TO 7
  110.      PRINT PTAB(12+x*48)zar(x,zr(x));
  111.    NEXT x
  112.    COLOR 2,1:LOCATE 23,1
  113.    FOR x=0 TO 7
  114.      PRINT PTAB(12+x*48)zaw(x,zw(x));
  115.    NEXT x
  116.  
  117. Eingaben:
  118.    WINDOW 4,"Spieler 1",(404,0)-(631,54),0,2         
  119.    WINDOW 5,"Spieler 2",(404,143)-(631,200),0,2
  120.    WINDOW 3,"Eingaben",(404,67)-(631,129),0,2
  121.    PALETTE 0,0.02,0.24,0.27 
  122.    PALETTE 1,1,1,1       
  123.    PALETTE 2,0,0,0      
  124.    PALETTE 3,0.33,0.33,0.33 
  125.    PALETTE 4,0.93,0.2,0    
  126.    PALETTE 5,1,1,0.13        
  127.    PALETTE 6,0.53,0.15,0   
  128.    PALETTE 7,0.63,0.63,0.63 
  129.    COLOR 5,0 
  130.    FOR x=1 TO 2
  131.      PRINT "Name Spieler",x:INPUT na$(x)
  132.      BEEP
  133.    NEXT x
  134.    WINDOW OUTPUT 4:COLOR 4,0:PRINT na$(1)
  135.    WINDOW OUTPUT 5:COLOR 1,0:PRINT na$(2)
  136.    WINDOW OUTPUT 3:COLOR 5,0
  137.    CLS:sp=1
  138.    
  139. naechsterSpieler:
  140.    IF sp=0 THEN sp=1 :ELSE sp=0
  141.    SteinNr=-2
  142.     
  143. Spielbeginn:
  144.    IF mattpr=1 THEN Mattpruef
  145.    WINDOW OUTPUT 4+sp:COLOR 4-sp*3,0:CLS:PRINT na$(1+sp)
  146.    PRINT"Sie sind am Zug!":PRINT p$ 
  147.    WINDOW OUTPUT 2
  148.  CheckMouse1:
  149.    WHILE MOUSE(0)<1 
  150.    WEND
  151.    mx=MOUSE(3):my=MOUSE(4)
  152.    mx=INT(mx/48)*48+1:my=INT(my/24)*24+1
  153.    IF sx=0 THEN sx=1:sy=1
  154.    IF px=0 THEN px=1:py=1
  155.    LINE (sx,sy)-(sx+47,sy+23),f(sx/48+sy/3),b 
  156.    LINE (px,py)-(px+47,py+23),f(px/48+py/3),b
  157.    FOR x=0 TO 7
  158.      IF prx(x)=mx AND pry(x)=my THEN m=x:GOTO MarkSetz
  159.    NEXT x
  160.    GOTO CheckMouse1
  161.  MarkSetz:     
  162.    BEEP:LINE (mx,my)-(mx+47,my+23),5,b
  163.  CheckMouse2:
  164.    WINDOW OUTPUT 2 
  165.    WHILE MOUSE(0)<1
  166.    WEND
  167.    sx=MOUSE(3):sy=MOUSE(4)
  168.    IF sx>383 OR sy>191 THEN CheckMouse2
  169.    sx=INT(sx/48)*48+1:sy=INT(sy/24)*24+1
  170.    IF sx=prx(m) AND sy=pry(m) THEN LINE (sx,sy)-(sx+47,sy+23),f(sx/48+sy/3),b:GOTO Spielbeginn 
  171.    LINE (sx,sy)-(sx+47,sy+23),5,b
  172.  EinsprungMattpruef:  
  173.    schrittzahl=ABS(INT((prx(m)-sx)/48))+ABS(INT((pry(m)-sy)/24))
  174.    IF schrittzahl<>zar(m,zr(m)) THEN 
  175.      fz=1:fz1$="Sie müssen":fz2$="Feld(er) ziehen!"
  176.      GOTO FalscherZug 
  177.    END IF   
  178.            
  179.    FOR x=0 TO 7
  180.      IF sx=prx(x) AND sy=pry(x) THEN
  181.        IF schwpr=1 THEN Sprungpruef
  182.        fz1$="Sie können nicht Ihren":fz2$="eigenen Stein schlagen!"
  183.        GOTO FalscherZug
  184.      END IF 
  185.    NEXT x
  186.  Sprungpruef:  
  187.    IF zar(m,zr(m))=1 THEN AllgShogunpruef1
  188.    weg1=0:weg2=0
  189.    IF sx=prx(m) THEN ZugpruefY
  190.    IF sy=pry(m) THEN ZugpruefX 
  191.    IF sx<prx(m) THEN stpx=48
  192.    IF sx>prx(m) THEN stpx=-48
  193.    IF sy<pry(m) THEN stpy=24
  194.    IF sy>pry(m) THEN stpy=-24
  195.    FOR n=sx+stpx TO prx(m) STEP stpx
  196.      FOR o=0 TO 7
  197.        IF (prx(o)=n AND pry(o)=sy) OR (pwx(o)=n AND pwy(o)=sy) THEN weg1=1
  198.        IF (prx(o)=n-stpx AND pry(o)=pry(m)) OR (pwx(o)=n-stpx AND pwy(o)=pry(m)) THEN weg2=1     
  199.      NEXT o
  200.    NEXT n 
  201.    FOR n=sy+stpy TO pry(m)-stpy STEP stpy
  202.      FOR o=0 TO 7
  203.        IF (pry(o)=n AND prx(o)=prx(m)) OR (pwy(o)=n AND pwx(o)=prx(m)) THEN weg1=1
  204.        IF (pry(o)=n AND prx(o)=sx) OR (pwy(o)=n AND pwx(o)=sx) THEN weg2=1
  205.      NEXT o
  206.    NEXT n
  207.    IF weg1=1 AND weg2=1 THEN FZug  
  208.    GOTO AllgShogunpruef1  
  209.  ZugpruefX:
  210.    IF sx<prx(m) THEN stp=48
  211.    IF sx>prx(m) THEN stp=-48
  212.    FOR n=sx+stp TO prx(m)-stp STEP stp
  213.      FOR o=0 TO 7
  214.        IF (prx(o)=n AND pry(o)=sy) OR (pwx(o)=n AND pwy(o)=sy) THEN FZug
  215.      NEXT o
  216.    NEXT n
  217.    GOTO AllgShogunpruef1
  218.  ZugpruefY:
  219.    IF sy<pry(m) THEN stp=24
  220.    IF sy>pry(m) THEN stp=-24
  221.    FOR n=sy+stp TO pry(m)-stp STEP stp
  222.      FOR o=0 TO 7
  223.        IF (pry(o)=n AND prx(o)=sx) OR (pwy(o)=n AND pwx(o)=sx) THEN
  224.  FZug:    
  225.          fz1$="Sie dürfen keinen Stein":fz2$="überspringen!":fz=0
  226.          GOTO FalscherZug     
  227.        END IF
  228.      NEXT o
  229.    NEXT n
  230.     
  231. AllgShogunpruef1:
  232.    spp=sp:sxx=sx:syy=sy
  233.    zz=zr(m):zr(m)=wert(INT(sx/48+sy/3))
  234.    pxm=prx(m):pym=pry(m):prx(m)=sx:pry(m)=sy 
  235.    z=-1
  236. AllgShogunpruef2:
  237.    IF sp=0 THEN 
  238.      sx=prx(3):sy=pry(3)
  239.      FOR x=0 TO 7
  240.        IF spp=0 AND pwx(x)=sxx AND pwy(x)=syy THEN pxmem=pwx(x):pwx(x)=0:pymem=pwy(x):pwy(x)=0:z=x:pm=1 
  241.      NEXT x 
  242.      GOSUB ShogunBedroht
  243.      IF spp=0 THEN sp=1:GOSUB WerteTauschen:GOTO AllgShogunpruef2 :ELSE GOTO Pruefende
  244.    ELSE
  245.      sx=prx(4):sy=pry(4)
  246.      FOR x=0 TO 7
  247.        IF spp=1 AND pwx(x)=sxx AND pwy(x)=syy THEN pxmem=pwx(x):pwx(x)=0:pymem=pwy(x):pwy(x)=0:z=x:pm=1 
  248.      NEXT x
  249.      GOSUB ShogunBedroht
  250.      IF spp=1 THEN sp=0:GOSUB WerteTauschen:GOTO AllgShogunpruef2
  251.    END IF
  252.  Pruefende:
  253.    sx=sxx:sy=syy:sp=spp
  254.    GOSUB WerteTauschen
  255.       
  256. Steinsetz:
  257.    IF spm=1 AND pm=1 THEN pm=0:IF z<>-1 THEN pwx(z)=pxmem:pwy(z)=pymem
  258.    IF spm=1 THEN MattEnde      
  259.    WINDOW OUTPUT 4+sp:CLS:PRINT na$(1+sp)
  260.    WINDOW OUTPUT 2
  261.    BEEP
  262.    LINE (prx(3+sp),pry(3+sp))-(prx(3+sp)+47,pry(3+sp)+23),f(prx(3+sp)/48+pry(3+sp)/3),b
  263.    LINE (mx,my)-(mx+47,my+23),f(mx/48+my/3),bf
  264.    prx(m)=sx:pry(m)=sy:zr(m)=wert(INT(prx(m)/48+pry(m)/3))
  265.    LINE (prx(m)+5,pry(m)+3)-(prx(m)+40,pry(m)+20),4-sp*3,bf
  266.    LINE (prx(m)+8,pry(m)+5)-(prx(m)+38,pry(m)+18),6+sp,b
  267.    IF m=3+sp THEN fa=5 :ELSE fa=6+sp
  268.    PAINT (prx(m)+20,pry(m)+12),fa,6+sp
  269.    LINE (prx(m),pry(m))-(prx(m)+47,pry(m)+23),f(prx(m)/48+pry(m)/3),b
  270.    LOCATE pry(m)/8+2,1:COLOR 5-sp*3,4-sp*3
  271.    PRINT PTAB(prx(m)+11);zar(m,zr(m))
  272.    IF sp=sb THEN p$=""
  273.    IF z<>-1 THEN GOSUB FigurGeschlagen
  274.    GOSUB WerteTauschen
  275.    GOTO naechsterSpieler
  276.      
  277. Summen:
  278.    zzz=zahl-1
  279.    sumX(1,1)=0:sumX(1,2)=0:sumX(1,3)=-zahl*48:sumX(1,4)=zahl*48:sumY(1,1)=-zahl*24:sumY(1,2)=zahl*24:sumY(1,3)=0:sumY(1,4)=0
  280.    IF Pruefstufe=1 THEN RETURN
  281.    sumX(2,1)=-48:sumX(2,2)=48:sumX(2,3)=-48:sumX(2,4)=48:sumY(2,1)=-zzz*24:sumY(2,2)=zzz*24:sumY(2,3)=zzz*24:sumY(2,4)=-zzz*24
  282.    IF Pruefstufe=2 THEN RETURN
  283.    sumX(3,1)=-zzz*48:sumX(3,2)=zzz*48:sumX(3,3)=-zzz*48:sumX(3,4)=zzz*48:sumY(3,1)=-24:sumY(3,2)=24:sumY(3,3)=24:sumY(3,4)=-24
  284.    IF Pruefstufe=3 THEN RETURN
  285.    sumX(4,1)=-96:sumX(4,2)=96:sumX(4,3)=-96:sumX(4,4)=96:sumY(4,1)=-48:sumY(4,2)=48:sumY(4,3)=48:sumY(4,4)=-48
  286.    RETURN
  287.    
  288. Mattpruef:
  289.    SteinNr=SteinNr+1:m=SteinNr
  290.    IF SteinNr=-1 THEN IF sp=0 THEN m=3 :ELSE m=4
  291.    IF SteinNr=0 THEN WINDOW OUTPUT 4+sp:PRINT"Einen Augenblick...":WINDOW OUTPUT 2
  292.    IF (sp=0 AND SteinNr=3) OR (sp=1 AND SteinNr=4) THEN Mattpruef   
  293.    IF SteinNr>7 THEN VerlorenGewonnen
  294.    IF prx(m)=0 THEN Mattpruef
  295.    Pruefstufe=1:pr=0
  296.    zahl=zar(m,zr(m))
  297.    mx=prx(m):my=pry(m):zrzahl=zr(m)
  298.  EinsprungMEnde:   
  299.    spm=1:MEnde=0
  300.    GOSUB Summen
  301.  Pruefstufen:
  302.    pr=pr+1 
  303.    sx=prx(m)+sumX(Pruefstufe,pr):sy=pry(m)+sumY(Pruefstufe,pr):IF sx<1 OR sy<1 OR sx>337 OR sy>169 THEN MEnde=1:GOTO MattEnde     
  304.    IF pr>4 AND zahl=Pruefstufe AND SteinNr=7 THEN VerlorenGewonnen
  305.    IF pr>4 AND zahl=Pruefstufe THEN naechstStein=1:GOSUB MattEnde:GOTO Mattpruef
  306.    IF pr>4 AND zahl>Pruefstufe THEN Pruefstufe=Pruefstufe+1:MEnde=1:pr=0:GOTO MattEnde
  307.    IF Pruefstufe=5 THEN naechstStein=1:MEnde=0:GOSUB MattEnde:GOTO Mattpruef
  308.    GOTO EinsprungMattpruef
  309.  MattEnde: 
  310.    spm=0:sx=0:sy=0:prx(m)=mx:pry(m)=my:zr(m)=zrzahl
  311.    IF MEnde=1 THEN EinsprungMEnde
  312.    IF naechstStein=1 THEN naechstStein=0:RETURN
  313.    mattpr=0:SteinNr=-2
  314.    GOTO Spielbeginn                        
  315.    
  316. ShogunBedroht:
  317.    FOR w=0 TO 7
  318.      shfeld=ABS((pwx(w)-sx)/48)+ABS((pwy(w)-sy)/24) 
  319.      IF shfeld=zaw(w,zw(w)) THEN
  320.        px=pwx(w):py=pwy(w)
  321.        IF px<>0 AND shfeld=1 THEN FZug2      
  322.        IF px<>0 THEN GOSUB Shogunpruef
  323.      END IF
  324.    NEXT w
  325.    RETURN
  326.  
  327. Shogunpruef:
  328.    weg1=0:weg2=0
  329.    IF sx=px THEN ShogunpruefY
  330.    IF sy=py THEN ShogunpruefX 
  331.    IF sx<px THEN stpx=48
  332.    IF sx>px THEN stpx=-48
  333.    IF sy<py THEN stpy=24
  334.    IF sy>py THEN stpy=-24
  335.    FOR n=sx+stpx TO px STEP stpx
  336.      FOR o=0 TO 7
  337.        IF (sp=0 AND o=3) OR (sp=1 AND o=4) THEN 
  338.          IF pwx(o)=n AND pwy(o)=sy THEN weg1=1
  339.          IF pwx(o)=n-stpx AND pwy(o)=py THEN weg2=1
  340.        ELSE   
  341.          IF (prx(o)=n AND pry(o)=sy) OR (pwx(o)=n AND pwy(o)=sy) THEN weg1=1
  342.          IF (prx(o)=n-stpx AND pry(o)=py) OR (pwx(o)=n-stpx AND pwy(o)=py) THEN weg2=1     
  343.        END IF
  344.      NEXT o
  345.    NEXT n 
  346.    FOR n=sy+stpy TO py-stpy STEP stpy
  347.      FOR o=0 TO 7
  348.        IF (sp=0 AND o=3) OR (sp=1 AND o=4) THEN
  349.          IF pwy(o)=n AND pwx(o)=px THEN weg1=1
  350.          IF pwy(o)=n AND pwx(o)=sx THEN weg2=1
  351.        ELSE
  352.          IF (pry(o)=n AND prx(o)=px) OR (pwy(o)=n AND pwx(o)=px) THEN weg1=1
  353.          IF (pry(o)=n AND prx(o)=sx) OR (pwy(o)=n AND pwx(o)=sx) THEN weg2=1
  354.        END IF
  355.      NEXT o
  356.    NEXT n
  357.    IF weg1=1 AND weg2=1 THEN RETURN 
  358.    GOTO FZug2
  359.  ShogunpruefX:
  360.    IF sx<px THEN stp=48
  361.    IF sx>px THEN stp=-48
  362.    FOR n=sx+stp TO px-stp STEP stp
  363.      FOR o=0 TO 7
  364.        IF (sp=0 AND o=3) OR (sp=1 AND o=4) THEN
  365.          IF pwx(o)=n AND pwy(o)=sy THEN RETURN
  366.        ELSE
  367.          IF (prx(o)=n AND pry(o)=sy) OR (pwx(o)=n AND pwy(o)=sy) THEN RETURN
  368.        END IF
  369.      NEXT o
  370.    NEXT n
  371.    GOTO FZug2
  372.  ShogunpruefY:
  373.    IF sy<py THEN stp=24
  374.    IF sy>py THEN stp=-24
  375.    FOR n=sy+stp TO py-stp STEP stp
  376.      FOR o=0 TO 7
  377.        IF (sp=0 AND o=3) OR (sp=1 AND o=4) THEN
  378.          IF pwy(o)=n AND pwx(o)=sx THEN RETURN
  379.        ELSE
  380.          IF (pry(o)=n AND prx(o)=sx) OR (pwy(o)=n AND pwx(o)=sx) THEN RETURN   
  381.        END IF
  382.      NEXT o
  383.    NEXT n
  384.  FZug2:
  385.    li=1
  386.    IF spp<>sp THEN sb=sp:p$="Ihr Shogun wird bedroht!":GOSUB ShogunWirdBedroht:RETURN
  387.    IF spp=sp THEN fz1$="Durch diesen Zug würde Ihr":fz2$="Shogun bedroht werden!":prx(m)=pxm:pry(m)=pym:zr(m)=zz:fz=0
  388.    IF z<>-1 THEN pwx(z)=pxmem:pwy(z)=pymem:pm=0
  389.    sx=sxx:sy=syy
  390.    
  391. FalscherZug:
  392.    IF mattpr=1 THEN MEnde=1:GOTO MattEnde
  393.    IF li=1 AND ((sp=0 AND m=3) OR (sp=1 AND m=4)) THEN LINE (sx,sy)-(sx+47,sy+23),1+sp*3,b
  394.    IF li=1 AND ((sp=0 AND m<>3) OR (sp=1 AND m<>4)) THEN LINE (prx(3+sp),pry(3+sp))-(prx(3+sp)+47,pry(3+sp)+23),1+sp*3,b
  395.    IF li=1 THEN LINE (px,py)-(px+47,py+23),1+sp*3,b 
  396.    WINDOW OUTPUT 4+sp:CLS
  397.    PRINT fz1$
  398.    IF fz=1 THEN PRINT zar(m,zr(m));:fz=0
  399.    PRINT fz2$  
  400.    WINDOW OUTPUT 2
  401.    SOUND 150,5,255,1
  402.    LINE (sx,sy)-(sx+47,sy+23),f(sx/48+sy/3),b
  403.    LINE (px,py)-(px+47,py+23),f(px/48+py/3),b
  404.    IF li=1 AND ((sp=0 AND m<>3) OR (sp=1 AND m<>4)) THEN LINE (prx(3+sp),pry(3+sp))-(prx(3+sp)+47,pry(3+sp)+23),f(prx(3+sp)/48+pry(3+sp)/3),b
  405.    li=0
  406.    GOTO CheckMouse2
  407.    
  408. ShogunWirdBedroht:
  409.    LINE (sx,sy)-(sx+47,sy+23),1+sp*3,b:LINE (px,py)-(px+47,py+23),1+sp*3,b
  410.    FOR x=230 TO 630 STEP 15
  411.      SOUND x,0.5,255,1:SOUND 830-x,0.5,255,2
  412.    NEXT x
  413.    mattpr=1
  414.    RETURN
  415.        
  416. FigurGeschlagen:
  417.    FOR x=0 TO 7
  418.      IF pwx(x)<>0 THEN Anzahl=Anzahl+1
  419.    NEXT x
  420.    IF sp=1 AND Anzahl<3 THEN sp=0:mattpr=0:GOTO VerlorenGewonnen
  421.    IF sp=0 AND Anzahl<3 THEN sp=1:mattpr=0:GOTO VerlorenGewonnen  
  422.    Anzahl=0
  423.    RETURN
  424.  
  425. WerteTauschen:
  426.    FOR x=0 TO 7
  427.      SWAP prx(x),pwx(x):SWAP pry(x),pwy(x):SWAP zr(x),zw(x)
  428.      FOR y=1 TO 4 
  429.        SWAP zar(x,y),zaw(x,y)
  430.      NEXT y
  431.    NEXT x
  432.    RETURN
  433.        
  434. Dunkel:
  435.    FOR x=1 TO 0 STEP -0.01
  436.      PALETTE 0,x,x,x:PALETTE 1,x,x,x
  437.    NEXT x
  438.    RETURN
  439.    
  440. Hell:
  441.    FOR x=0 TO 1 STEP 0.01
  442.      PALETTE 0,x,x,x:PALETTE 1,x,x,x
  443.    NEXT x
  444.    RETURN
  445.  
  446. VerlorenGewonnen:
  447.    WINDOW OUTPUT 4+sp:CLS
  448.    PRINT na$(1+sp)","
  449.    IF mattpr=1 THEN
  450.      mattpr=0:spm=0:p$=""
  451.      PRINT"Ihr Shogun ist matt!!!" 
  452.      PRINT"(Er würde beim nächsten Zug" 
  453.      PRINT"geschlagen werden.)"
  454.      PRINT"Sie haben leider verloren."
  455.    ELSE
  456.      PRINT"Sie haben nur noch zwei"
  457.      PRINT"Steine und somit verloren!"
  458.      PRINT"Üben Sie noch ein wenig!"
  459.    END IF
  460.    WINDOW OUTPUT 5-sp:CLS
  461.    PRINT na$(2-sp)","
  462.    PRINT"Sie haben gewonnen!"
  463.    PRINT"Herzlichen Glückwunsch!!!"
  464.    WINDOW OUTPUT 3
  465.    PRINT"Noch ein Spiel (J/N)?":i$="":p$=""
  466.    WHILE i$<>"j" AND i$<>"n"
  467.      i$=INKEY$ 
  468.    WEND  
  469.    IF i$="j" THEN ns=1:GOTO NeuesSpiel
  470.    IF i$="n" THEN SCREEN CLOSE 2:END        
  471.          
  472. Daten0:
  473.    DATA 4,1,4,1,2,3,2,3
  474.    DATA 3,2,3,2,1,4,1,4
  475.    DATA 2,3,2,3,4,1,4,1
  476.    DATA 1,4,1,4,3,2,3,2
  477. Daten90:
  478.    DATA 3,4,3,4,1,2,1,2
  479.    DATA 2,1,2,1,4,3,4,3
  480.    DATA 1,2,1,2,3,4,3,4
  481.    DATA 4,3,4,3,2,1,2,1
  482.    
  483.  
  484. SUB Anleitung STATIC
  485.     FOR x=1 TO 0 STEP -0.01
  486.       PALETTE 0,x,x,x:PALETTE 1,x,x,x:PALETTE 2,x,x,x
  487.     NEXT x
  488.     CLS:COLOR 2,0
  489.     PRINT TAB(33)"SPIELANLEITUNG":PRINT
  490.     PRINT"Shogun ist ein Brettspiel, das zu zweit gespielt wird."
  491.     PRINT
  492.     PRINT"Jeder Spieler hat acht Steine, von denen der jeweils gelb markierte der  SHOGUN"
  493.     PRINT"(mit dem König im Schach vergleichbar) ist." 
  494.     PRINT"Die Zahlen auf den Steinen geben an, wieviele Felder die Steine ziehen  dürfen."
  495.     PRINT"Wenn ein Stein gesetzt wurde, ändert sich dessen  Zahl  nach  einem  bestimmten"
  496.     PRINT"System, das hier aber nicht näher erläutert wird, da das Spiel  sonst  an  Reiz"
  497.     PRINT"verlieren würde. Auf dem Shogun können die  Zahlen 1 oder 2,  auf  den  anderen"
  498.     PRINT"Steinen die Zahlen 1 bis 4 erscheinen."
  499.     PRINT"Die Spieler ziehen  abwechselnd, Spieler 1 (rot) beginnt. Ein  Zug  kann  nicht"
  500.     PRINT"verweigert werden."
  501.     PRINT"Der Spieler klickt den Stein, den er ziehen möchte, mit  der  linken  Maustaste"
  502.     PRINT"an, bewegt den Mauspfeil dann auf das Feld, auf das der  Stein  gesetzt  werden"
  503.     PRINT"soll und drückt erneut die linke Maustaste."
  504.     PRINT"Hat ein Spieler eine Figur angeklickt, die er doch  nicht  setzen  möchte, kann"
  505.     PRINT"er sie durch nochmaliges Anklicken wieder  loslassen. Ein  bereits  vollständig"
  506.     PRINT"ausgeführter Zug kann jedoch nicht zurückgenommen werden!"
  507.     PRINT:PRINT
  508.     PRINT TAB(33)"Weiter mit ´W´"
  509.     FOR x=0 TO 1 STEP 0.01
  510.       PALETTE 0,x,x,x:PALETTE 1,x,x,x
  511.     NEXT x
  512.     WHILE INKEY$<>"w" 
  513.     WEND
  514.     FOR x=1 TO 0 STEP -0.01
  515.       PALETTE 0,x,x,x:PALETTE 1,x,x,x
  516.     NEXT x
  517.     CLS:PRINT:PRINT
  518.     PRINT"Die Steine dürfen nur waagerecht und senkrecht, nicht diagonal gezogen  werden."
  519.     PRINT"Es dürfen weder gegnerische noch eigene Steine übersprungen werden.  Ein  Stein"
  520.     PRINT"darf in einem Zug höchstens einmal seine Richtung um 90° ändern!"
  521.     PRINT"Gegnerische Steine dürfen geschlagen werden."
  522.     PRINT"Der Shogun darf nicht auf ein vom Gegner bedrohtes Feld gesetzt werden.Wenn der"
  523.     PRINT"Shogun durch einen gegnerischen Stein bedroht wird, muß er durch eine der  fol-"    
  524.     PRINT"genden Möglichkeiten in  Sicherheit  gebracht werden:"
  525.     PRINT"- er wird auf ein nicht bedrohtes Feld gesetzt"
  526.     PRINT"- er schlägt den ihn bedrohenden Stein, wenn dieser nicht gedeckt ist"
  527.     PRINT"- zwischen ihn und den ihn bedrohenden Stein wird ein anderer Stein gesetzt"
  528.     PRINT
  529.     PRINT"Verloren hat,"
  530.     PRINT"- wer außer dem Shogun nur noch einen weiteren Stein besitzt oder"
  531.     PRINT"- wessen Shogun so bedroht wird, daß dieser keine Möglichkeit mehr hat,sich von"
  532.     PRINT"  der Bedrohung zu befreien."
  533.     PRINT
  534.     PRINT"Und nun viel Spaß beim Spiel!"
  535.     PRINT
  536.     PRINT TAB(33)"Weiter mit ´W´"
  537.     FOR x=0 TO 1 STEP 0.01
  538.       PALETTE 0,x,x,x:PALETTE 1,x,x,x
  539.     NEXT x
  540.     WHILE INKEY$<>"w" 
  541.     WEND   
  542. END SUB
  543.   
  544.